//
//  MCCardFileReader.h
//  ApexIOTCardSDK
//
//  Created by 黄亮东 on 16/5/10.
//  Copyright © 2016年 珠海艾派克科技股份有限公司. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "MCCardReadEvent.h"
@protocol MCCardFileReaderDelegate<NSObject>
/**
 * 读卡开始。
 *
 * @param event
 */
- (void)onCardReadDidStarted:(MCCardReadEvent *)event;
/**
 * 读卡进度有发生。
 *
 * @param event
 */
- (void)onCardReadProgress:(MCCardReadEvent *)event;
/**
 * 读卡结束，后续将不会再调用本监听器。
 *
 * @param event
 */
- (void)onCardReadDidFinished:(MCCardReadEvent *)event;

@end

@interface MCCardFileReader : NSObject

/**
 * 文件读取监听器
 */
@property (nonatomic, weak) id<MCCardFileReaderDelegate>delegate;

/**
 * 将指定的卡文件读取任务放置在队列的最前面
 * 并要求底层及时将该文件的读取进度及时反馈给指定的文件监听器。
 *
 * 如果需要读取卡片，将会检查本卡片是否有被锁定，如果没有，则将产生自动锁定卡片。
 *
 * 在最后文件读取完成，相应监听器将会被移除，因为目标任务已经完成，并且也通知到位了。
 *
 * @param cardFile 文件对象
 *
 * @return 如果尝试读取该卡片的时候，已经锁定了别的卡片，将返回NO
 */
- (BOOL)read:(MCCardFile *)cardFile;

/**
 * 释放相关的系统资源。
 *
 * 包括释放监听器、以及可能的文件缓存、清除读文件队列。
 *
 */
- (void)close;

/**
 *  检查当前读卡管理是否已经被关闭
 */
@property (nonatomic, assign) BOOL isClose;
@end
